During development of a software program in a data processing system, numerous techniques are often implemented to analyze the functionality and efficiency of the software program. A commonly used technique inserts a breakpoint in the software program to signal the data processing system to interrupt current execution of the software program at a predetermined address typically referred to as a breakpoint address. The breakpoint address is defined by the user of the data processing system and stored in a breakpoint register. The breakpoint register generally receives an address from an address bus and then compares the address with the contents of the breakpoint register. If the received address and a breakpoint address or a breakpoint address range stored in the breakpoint register match, a signal is sent to a central processing unit in the data processing system and an exception processing routine specified by the user of the data processing system is typically executed. In the exception processing routine, the user may specify that the internal registers of the data processor be displayed every time a breakpoint signal is encountered.
In some cases, the user of the data processing system uses a masking operation to exclude certain bits of the breakpoint address from participating in a comparison operation between an address on an address bus and the contents of the breakpoint register. Generally, a masking operation prevents predetermined bits of an operand from participating in a subsequent data processing function. In a typical data processing system, either a static or a dynamic mask is used during a masking operation. A static mask is typically defined by the user of the data processing system and implemented before the comparison operation between the address and the contents of the breakpoint register occurs. A static mask is generally a conditional mask which prevents predetermined bits of a breakpoint address from participating in the comparison operation.
In comparison, a dynamic mask is defined and implemented at the same point in time that the comparison operation occurs. Typically, the value of a dynamic mask is modified to variably match the size of an access to the breakpoint address. The size of an access may vary from a byte to a quadword.
Data processing systems designs typically implement either static or dynamic masking operations. A static mask function allows the user of a data processing system to conditionally mask certain bits in a breakpoint address. A dynamic mask function, however, allows for greater flexibility and efficiency during a breakpoint operation. Circuit complexities and area limitations are typically associated with any increase in the previously discussed masking functionality. As well, the execution time associated with implementing masking operations may significantly increase system overhead. Therefore, a system designer must typically choose between either a static or dynamic address masking mechanism.